package com.hundsun.yr.universal.p2p.utils;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import android.util.Base64;

import com.hundsun.yr.universal.library.common.HexUtils;




/**   
* @Title: HMACSHA1.java 
* @Package com.hundsun.yr.universal.p2p.utils 
* @Description: HMACSHA1签名
* @author shenhejun  
* @date 2016-6-21 下午2:18:15 
* @version V1.0   
*/
public class HMACSHA1 {
	
	private static final String MAC_NAME = "HmacSHA1";    
    private static final String ENCODING = "UTF-8";    
	
	/**  
     * 使用 HMAC-SHA1 签名方法对对encryptText进行签名  
     * @param encryptText 被签名的字符串  
     * @param key  密钥  
     * @return  base64 String
     * @throws Exception  
     */    
    public static String HmacSHA1Encrypt(String encryptText, String key) throws Exception     
    {           
        byte[] data=key.getBytes(ENCODING);  
        //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称  
        SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);   
        //生成一个指定 Mac 算法 的 Mac 对象  
        Mac mac = Mac.getInstance(MAC_NAME);   
        //用给定密钥初始化 Mac 对象  
        mac.init(secretKey);    
        
          
        byte[] text = encryptText.getBytes(ENCODING);    
        //完成 Mac 操作   
        byte[] finalText=mac.doFinal(text);
//        String base64Text = Base64.encodeToString(finalText, Base64.DEFAULT).trim();
        
        
        String base64Text=Base64.encodeToString(HexUtils.encodeHexString(finalText).getBytes() , Base64.DEFAULT).trim();
        
        return base64Text;    
    }    

}
